#ifndef SATURNOS_INC_KERN_DEBUG_H
#define SATURNOS_INC_KERN_DEBUG_H

#include <kern/monitor.h>

#ifdef RUN_TESTS
 #define TEST(t)		do { (t); } while (0)
#else
 #define TEST(t)
#endif /* RUN_TESTS */

#ifdef DEBUG
 #define ASSERT(cond, msg)	do { if (!(cond)) panic("PANIC IN " __FILE__ ": " msg); } while (0)

 #define DEBUG_STR(msg)		monitor_write(msg)
 #define DEBUG_HEX(num)		monitor_write_hex(num)
#else
 #define ASSERT(cond, msg)

 #define DEBUG_STR(msg)
 #define DEBUG_HEX(num)
#endif /* DEBUG */
 
void panic(char* msg) __attribute__ ((noreturn));
void imhere(void) __attribute__ ((noreturn));


#endif /* SATURNOS_INC_KERN_DEBUG_H */

